package cn.com.dhcc.ddi.task.service.extract;

import cn.com.dhcc.app.core.exception.DaoException;
import cn.com.dhcc.app.core.exception.ServiceException;
import cn.com.dhcc.ddi.task.service.DataSet;
import cn.com.dhcc.ddi.task.service.Result;
import cn.com.dhcc.ddi.task.service.transform.MapOrder;
import cn.com.dhcc.ddi.task.vo.Task;

import java.util.Set;

/**
 * 数据抽取接口
 * @author qiao
 * 2016-11-1 下午3:49:47
 */
public interface EDataSourceInterface {

	/**
	 * 抽取原始数据，并落地
	 * @方法: extractData
	 * @描述: 
	 * @param taskId 任务id
	 * @return 抽取日志id
	 * @throws
	 */
	public Result extractData(Task task , String taskLogId) throws DaoException, ServiceException;
	/**
	 * 抽取并映射后落地，用于解决数据量大，边抽取变映射
	 * @param dataSourceMeteData 数据源
	 * @param mapOrders 映射指令
	 * @return 抽取并映射之后的数据集
	 */
	public DataSet extractData(String dataSourceMeteData, Set<MapOrder> mapOrders);
	/**
	 * 将数据在目的端进行执行
	 * @param dataSourceMeteData
	 * @param dataSets
	 * @return
	 */
	public Result loadData(String dataSourceMeteData,DataSet dataSets);

	/**
	 * 交换结果通知，处理任务状态信息
	 * @param taskLogId
	 * @param status
     * @param msg
     */
	public void reciveNotify(String taskLogId,String status,String msg);
}
